package exception;

public class Test {
    public static void main(String[] args) {
//        //模拟王者登录游戏的执行过程
//        try {
//            //存放所有可能出现异常的代码
//            login();
//            loadGame();
//            chooseHero();
//            biubiubiu();
//        }
//        //catch 捕获相应的异常 {}内是出现相应异常的处理方式
//        catch (登陆异常){}
//        catch (载入游戏异常){}
//        catch (选取英雄异常){}
//        catch (正常游戏时出现的异常){}
//
//        final{
//            //不是强制书写
//            //无论是否发生异常，都会执行final代码块，一般执行资源的释放
//            //关闭资源的处理
//        try{
//            exception1();
//        }catch (ArrayIndexOutOfBoundsException e){
//            System.out.println("越界异常");
//            e.printStackTrace();
//        }

        fun1();
    }

    public static void fun1(){
        throw new NullPointerException("人为抛出一个异常");
    }

    private static void exception1() {
        int[] arr={1,3,5};
        System.out.println(arr[100]);
    }


    public static int fun(){
            int[] arr=new int[]{1,2,3};
            try {
                System.out.println(arr[100]);
                return 1;
            }catch (ArrayIndexOutOfBoundsException e){
                //此处的e就是异常对象,默认由JVM产生传递给catch代码段
                System.out.println("数组下标越界!");
                //printStackTrace() 打印错误堆栈信息
                e.printStackTrace();
                return 2;
            }finally {
                //无论是否产生异常，都会执行的代码块！
                System.out.println("finally 内的代码块");
                return 3;
            }
        }


}
